xen.git
14 years agolibxl: do not leak qemu saved state on restore
Ian Campbell [Tue, 13 Dec 2011 15:42:18 +0000 (15:42 +0000)]
libxl: do not leak qemu saved state on restore

In particular do not leak /var/lib/xen/qemu-resume.<domid>.

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>
14 years agopygrub: Fix "a" entry editing in grub2
Miroslav Rezanina [Tue, 13 Dec 2011 15:39:28 +0000 (15:39 +0000)]
pygrub: Fix "a" entry editing in grub2

When user wants to change entry in grub2 menu in pygrub, there's no
response in case of appending command line arguments ('a' key).

Append malfunction is caused by change of keyword used for kernel
record. Grub uses 'kernel' for line with linux kernel but grub2 uses
'linux' instead. This patch adds checking for both grub 1 and 2 keywords.

Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>
14 years agopygrub: Allow scrolling of the list of entries
Miroslav Rezanina [Tue, 13 Dec 2011 15:38:20 +0000 (15:38 +0000)]
pygrub: Allow scrolling of the list of entries

When user wants to change entry in grub2 menu in pygrub, there
may be crash of pygrub in case of editing item ('e' key).

Crash on editing is caused longer entry list in case of grub2. As entry
window is 10 lines high, it can hold only 8 entries (2 lines for border).
Adding line outside of windows high causes crash. Patch add handling
for longer lists and scrolling through them.

Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>
14 years agolibxl: Compile with -Wformat-nonliteral.
Ian Campbell [Tue, 13 Dec 2011 15:31:12 +0000 (15:31 +0000)]
libxl: Compile with -Wformat-nonliteral.

At least one compiler (some Ubuntu version) uses this by default and it seems
like a good idea anyway and the fixup required is trivial.

One hunk is from a patch by Ian Jackson.

Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Reported-by: Adda Rathbone <addarathbone@googlemail.com>
Tested-by: Adda Rathbone <addarathbone@googlemail.com>
Tested-by: Andrew Pounce <andrew.pounce@citrix.com>
Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>
14 years agostubdom: allow to build with older tool chain
Jan Beulich [Tue, 13 Dec 2011 12:32:23 +0000 (13:32 +0100)]
stubdom: allow to build with older tool chain

GNU make prior to 3.81 doesn't support $(realpath ...). This fixes a
regression introduced in 23368:0f670f5146c8 (the option tested via
cc-option-add got interpreted as the argument of the -I compiler
option, as its intended argument was blank, and hence the compiler was
falsely considered to support *any* option in the pciutils sub-tree).

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Keir Fraser <keir@xen.org>
14 years agoACPI: eliminate duplicate IVRS definitions
Jan Beulich [Tue, 13 Dec 2011 10:50:43 +0000 (11:50 +0100)]
ACPI: eliminate duplicate IVRS definitions

Use their proper counterparts in include/acpi/actbl*.h instead.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Keir Fraser <keir@xen.org>
14 years agoACPI: eliminate duplicate DMAR definitions
Jan Beulich [Tue, 13 Dec 2011 10:49:33 +0000 (11:49 +0100)]
ACPI: eliminate duplicate DMAR definitions

Use their proper counterparts in include/acpi/actbl*.h instead.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Keir Fraser <keir@xen.org>
14 years agoACPI: update table interface headers
Jan Beulich [Tue, 13 Dec 2011 10:48:08 +0000 (11:48 +0100)]
ACPI: update table interface headers

... to what is being used on Linux 3.1 (and 3.2-rc).

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Keir Fraser <keir@xen.org>
14 years agoACPI: eliminate duplicate MADT parsing and unused SBF definitions
Jan Beulich [Tue, 13 Dec 2011 10:46:21 +0000 (11:46 +0100)]
ACPI: eliminate duplicate MADT parsing and unused SBF definitions

Use their proper counterparts in include/acpi/actbl*.h instead.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Keir Fraser <keir@xen.org>
14 years agoVT-d: bind IRQs to CPUs local to the node the IOMMU is on
Jan Beulich [Tue, 13 Dec 2011 10:38:57 +0000 (11:38 +0100)]
VT-d: bind IRQs to CPUs local to the node the IOMMU is on

This extends create_irq() to take a node parameter, allowing the
resulting IRQ to have its destination set to a CPU on that node right
away, which is more natural than having to post-adjust this (and
get e.g. a new IRQ vector assigned despite a fresh one was just
obtained).

All other callers of create_irq() pass NUMA_NO_NODE for the time being.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Keir Fraser <keir@xen.org>
14 years agoremove the use of -Wno-unused-value
Jan Beulich [Tue, 13 Dec 2011 10:36:35 +0000 (11:36 +0100)]
remove the use of -Wno-unused-value

It has been hiding actual mistakes, and there are not too many changes
necessary to make things build without suppressing this warning.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Keir Fraser <keir@xen.org>
14 years agox86: remove redundant MCE related MSR definitions
Jan Beulich [Tue, 13 Dec 2011 08:50:21 +0000 (09:50 +0100)]
x86: remove redundant MCE related MSR definitions

Two definitions (the first register and a macro to calculate the
register for a given bank) are sufficient per kind of register.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Keir Fraser <keir@xen.org>
14 years agox86: add platform hypercall to retrieve pCPU-s' family, model, and stepping
Jan Beulich [Tue, 13 Dec 2011 08:48:51 +0000 (09:48 +0100)]
x86: add platform hypercall to retrieve pCPU-s' family, model, and stepping

With the recent hotplug changes to the Xen part of the microcode
loading, this allows the kernel driver to avoid unnecessary calls into
the hypervisor during pCPU hot-enabling: Knowing that the hypervisor
retains the data for already booted CPUs, only data for CPUs with a
different signature needs to be passed down. Since the microcode
loading code can be pretty verbose, avoiding to invoke it can make the
log much easier to look at in case of problems.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Keir Fraser <keir@xen.org>
14 years agox86/microcode: Allow "ucode=" argument to be negative
Jan Beulich [Tue, 13 Dec 2011 08:47:13 +0000 (09:47 +0100)]
x86/microcode: Allow "ucode=" argument to be negative

... to indicate counting from the end of the modules list.

Suggested by Tim Deegan.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Keir Fraser <keir@xen.org>
14 years agox86, amd: Disable GartTlbWlkErr when BIOS forgets it
Jan Beulich [Tue, 13 Dec 2011 08:45:11 +0000 (09:45 +0100)]
x86, amd: Disable GartTlbWlkErr when BIOS forgets it

This patch disables GartTlbWlk errors on AMD Fam10h CPUs if the BIOS
forgets to do is (or is just too old). Letting these errors enabled
can cause a sync-flood on the CPU causing a reboot.

The AMD BKDG recommends disabling GART TLB Wlk Error completely.

Based on a Linux patch from Joerg Roedel <joerg.roedel@amd.com>; see e.g.
https://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=patch;h=5bbc097d890409d8eff4e3f1d26f11a9d6b7c07e

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Keir Fraser <keir@xen.org>
14 years agoflask: add tools/flask/utils/flask-label-pci to .hgignore
Ian Jackson [Mon, 12 Dec 2011 17:59:43 +0000 (17:59 +0000)]
flask: add tools/flask/utils/flask-label-pci to .hgignore

This was apparently forgotten in 24353:448c48326d6b

Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>
diff -r 7e90178b8bbf -r c995cdcc3700 .hgignore
--- a/.hgignore Mon Dec 12 17:48:42 2011 +0000
+++ b/.hgignore Mon Dec 12 17:58:25 2011 +0000
@@ -157,6 +157,7 @@
 ^tools/flask/utils/flask-getenforce$
 ^tools/flask/utils/flask-loadpolicy$
 ^tools/flask/utils/flask-setenforce$
+^tools/flask/utils/flask-label-pci$
 ^tools/fs-back/fs-backend$
 ^tools/hotplug/common/hotplugpath\.sh$
 ^tools/include/xen/.*$

14 years agolibxl: Use GC_INIT and GC_FREE everywhere
Ian Jackson [Mon, 12 Dec 2011 17:48:42 +0000 (17:48 +0000)]
libxl: Use GC_INIT and GC_FREE everywhere

Replace
    libxl__gc gc = LIBXL_INIT_GC(ctx);
    ...
    libxl__free_all(&gc);
with
    GC_INIT(ctx);
    ...
    GC_FREE;
throughout with a couple of perl runes.

We must then adjust uses of the resulting gc for pointerness, which is
mostly just replacing all occurrences of "&gc" with "gc".  Also a
couple of unusual uses of LIBXL_INIT_GC needed to be fixed up by hand.

Here are those runes:
 perl -i -pe 's/\Q    libxl__gc gc = LIBXL_INIT_GC(ctx);/    GC_INIT(ctx);/' tools/libxl/*.c
 perl -i -pe 's/\Q    libxl__free_all(&gc);/    GC_FREE;/' tools/libxl/*.c

Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
Committed-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
14 years agolibxl: libxl_ctx_free should free the ctx
Ian Jackson [Mon, 12 Dec 2011 17:48:42 +0000 (17:48 +0000)]
libxl: libxl_ctx_free should free the ctx

Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
Committed-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
14 years agolibxl: make libxl__free_all idempotent
Ian Jackson [Mon, 12 Dec 2011 17:48:41 +0000 (17:48 +0000)]
libxl: make libxl__free_all idempotent

Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
Committed-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
14 years agolibxl: make libxl__[v]log const-correct
Ian Jackson [Mon, 12 Dec 2011 17:48:41 +0000 (17:48 +0000)]
libxl: make libxl__[v]log const-correct

Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
Committed-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
14 years agolibxl: introduce lock in libxl_ctx
Ian Jackson [Mon, 12 Dec 2011 17:48:41 +0000 (17:48 +0000)]
libxl: introduce lock in libxl_ctx

This lock will be used to protect data structures which will be hung
off the libxl_ctx in subsequent patches.

Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
Committed-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
14 years agolibxl: Rationalise #includes
Ian Jackson [Mon, 12 Dec 2011 17:48:40 +0000 (17:48 +0000)]
libxl: Rationalise #includes

libxl_internal.h now #includes libxl.h and various system headers.

This
 1. makes the order of header inclusion more predictable
 2. explicitly allows libxl_internal.h to use objects defined in libxl.h
 3. removes the need for individual files to include these headers

Also
 - remove some unnecessary #includes of libxl_utils.h,
   flexarray.h, etc. in some libxl*.c files,
 - include libxl_osdeps.h at the top of libxl_internal.h
 - add missing includes of libxl_osdeps.h to a couple of files
 - change libxl.h to libxl_internal.h in a couple of files

Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
Committed-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
14 years agolibxl: internal convenience macros
Ian Jackson [Mon, 12 Dec 2011 17:48:40 +0000 (17:48 +0000)]
libxl: internal convenience macros

Provide some macros which are useful shorthands for use within libxl:
  * GC_INIT to initialise a gc from a ctx and GC_FREE to free it
  * CTX(gc) to give you back the ctx
  * LIBXL_TAILQ_INSERT_SORTED for inserting things into sorted lists

These will be used by later patches.

Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
Committed-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
14 years agolibxl: permit declaration after statement
Ian Jackson [Mon, 12 Dec 2011 17:48:39 +0000 (17:48 +0000)]
libxl: permit declaration after statement

GCC and C99 allow declarations to be mixed with code.  This is a good
idea because:

 * It allows variables to be more often initialised as they are
   declared, thus reducing the occurrence of uninitialised variable
   errors.

 * Certain alloca-like constructs (arrays allocated at runtime on the
   stack) can more often be written without a spurious { } block.
   Such blocks are confusing to read.

 * It makes it easier to write and use macros which declare and
   initialise formulaic variables and do other function setup code,
   because there is no need to worry that such macros might be
   incompatible with each other or have strict ordering constraints.

Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
Committed-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
14 years agolibxl: idl: Provide struct and union tags
Ian Jackson [Mon, 12 Dec 2011 17:48:39 +0000 (17:48 +0000)]
libxl: idl: Provide struct and union tags

Instead of generating:

   typedef struct {
     ...
   } libxl_foo;

Produce:

   typedef struct libxl_foo {
     ...
   } libxl_foo;

This makes it possible to refer to libxl idl-generated structs and
unions, as incomplete types, before they have been defined.

Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
Committed-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
14 years agolibxl: idl: support new "private" type attribute
Ian Jackson [Mon, 12 Dec 2011 17:48:38 +0000 (17:48 +0000)]
libxl: idl: support new "private" type attribute

This provides for fields in libxl datatypes which are only present in
the C version of structures and are used only by libxl itself.  This
is useful when a libxl datatype wants to contain fields which are used
by libxl internally and which are only present in the structure to
avoid additional memory allocation inconvenience.

Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
Committed-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
14 years agolibxl: Provide a version of bsd's queue.h as _libxl_list.h
Ian Jackson [Mon, 12 Dec 2011 17:48:38 +0000 (17:48 +0000)]
libxl: Provide a version of bsd's queue.h as _libxl_list.h

We would like some linked list macros which are (a) well known to be
sane and (b) typesafe.  BSD's queue.h meets these criteria.

We also provide some simple perlery to arrange to add the libxl_
namespace prefix to the macros.  This will allow us to #include
_libxl_list.h in our public header file without clashing with anyone
else who is also using another version of queue.h.

(A note on copyright: The FreeBSD files we are adding have an
[L]GPL-compatible licence, so there is no need to change our COPYING.
Although FreeBSD's queue.3 still contains the advertising clause, this
has been withdrawn by UCB as recorded in the FreeBSD COPYRIGHT file,
which is included in tools/libxl/external/ for reference.)

Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
Acked-by: Ian Campbell <Ian.campbell@citrix.com>
Tested-by: Roger Pau Monne <roger.pau@entel.upc.edu>
Committed-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
14 years agolibxenstore: Provide xs_check_watch
Ian Jackson [Mon, 12 Dec 2011 17:48:38 +0000 (17:48 +0000)]
libxenstore: Provide xs_check_watch

Event-driven programs want to wait until the xs_fileno triggers for
reading, and then repeatedly call xs_check_watch.

Also xs_read_watch exposes a useless "num" out parameter, which should
always (if things aren't going hideously wrong) be at least 2 and
which the caller shouldn't be interested in.  So xs_check_watch
doesn't have one of those.

Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
Committed-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
14 years agolibxl: Make libxl__xs_* more const-correct
Ian Jackson [Mon, 12 Dec 2011 17:48:37 +0000 (17:48 +0000)]
libxl: Make libxl__xs_* more const-correct

Paths and values which are not modified by these functions should be
declared as "const char *" not "char *".

Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
Committed-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
14 years agoxl: fix compiler warnings
Andre Przywara [Mon, 12 Dec 2011 17:43:15 +0000 (17:43 +0000)]
xl: fix compiler warnings

either GCC 4.6.1 or Ubuntu add -Werror=format-security to the -Wall set,
so libxl compilation breaks:
   libxl_create.c: In function 'store_libxl_entry':
   libxl_create.c:454:9: error: format not a string literal and no
format arguments [-Werror=format-security]
   cc1: all warnings being treated as errors

Attached patch fixes this and another occurrence.

Patch from: Uwe Dannowski

Signed-off-by: Andre Przywara <andre.przywara@amd.com>
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>
14 years agox86/Intel: quiesce revised CPUID level message
Jan Beulich [Mon, 12 Dec 2011 09:47:26 +0000 (10:47 +0100)]
x86/Intel: quiesce revised CPUID level message

Print this only once, for the boot CPU, unless "cpuinfo" was specified.
I found this particularly annoying on a machine which also didn't have
it MTRRs consistently set up across cores, resulting in the printing of
those messages being awfully slow (and with a second per-CPU message
added for debugging purposes this even lead to timeouts during AP
bringup).

Signed-off-by: Jan Beulich <jbeulich@suse.com>
14 years agoxend: fix insufficient quoting in tapdisk
Philipp Hahn [Thu, 8 Dec 2011 17:15:16 +0000 (17:15 +0000)]
xend: fix insufficient quoting in tapdisk

Fix insufficient quoting between "tap-ctl list" and
xend/server/BlktapController.py

The "line.split(None, 4)" needs to be a "3", because 3 splits needs to
be done to get the 4 parts.  Sorry for the mixup.

[ fix to 24335:3915bd95ade5. -iwj ]

Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>
14 years agodocs: Say in xm(1) that xm is obsolete
Ian Jackson [Thu, 8 Dec 2011 16:55:00 +0000 (16:55 +0000)]
docs: Say in xm(1) that xm is obsolete

Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
14 years agoUpdate QEMU_TAG
Ian Jackson [Thu, 8 Dec 2011 16:40:09 +0000 (16:40 +0000)]
Update QEMU_TAG

14 years agox86/mm: New mem access type to log access
Andres Lagar-Cavilla [Tue, 6 Dec 2011 21:16:56 +0000 (21:16 +0000)]
x86/mm: New mem access type to log access

This patch adds a new p2m access type, n2rwx. It allows for implement a "log
access" mode in the hypervisor, akin to log dirty but for all types of
accesses. Faults caused by this access mode automatically promote the
access rights of the offending p2m entry, place the event in the ring, and
let the vcpu keep on executing.

Signed-off-by: Andres Lagar-Cavilla <andres@lagarcavilla.org>
Signed-off-by: Adin Scannell <adin@scannell.ca>
Acked-by: Tim Deegan <tim@xen.org>
Committed-by: Tim Deegan <tim@xen.org>
14 years agox86/mm: When mem event automatically promotes access rights, let other subsystems...
Andres Lagar-Cavilla [Tue, 6 Dec 2011 21:16:56 +0000 (21:16 +0000)]
x86/mm: When mem event automatically promotes access rights, let other subsystems know

The mem event fault handler in the p2m can automatically promote the access
rights of a p2m entry. In those scenarios, vcpu's are not paused and they will
immediately retry the faulting instructions. This will generate a second fault
if the underlying entry type requires so (paging, unsharing, pod, etc).
Collapse the two faults into a single one.

Signed-off-by: Andres Lagar-Cavilla <andres@lagarcavilla.org>
Acked-by: Tim Deegan <tim@xen.org>
Committed-by: Tim Deegan <tim@xen.org>
14 years agoImprove handling of nested page faults
Andres Lagar-Cavilla [Tue, 6 Dec 2011 20:31:49 +0000 (20:31 +0000)]
Improve handling of nested page faults

Add checks for access type. Be less reliant on implicit semantics.

Signed-off-by: Andres Lagar-Cavilla <andres@lagarcavilla.org>
Acked-by: Tim Deegan <tim@xen.org>
Committed-by: Tim Deegan <tim@xen.org>
14 years agox86/mm: Allow dummy responses on the mem_event ring.
Andres Lagar-Cavilla [Tue, 6 Dec 2011 20:10:32 +0000 (20:10 +0000)]
x86/mm: Allow dummy responses on the mem_event ring.

Ring semantics require that for every request, a response be put. This
allows consumer to place a dummy response if need be.

Signed-off-by: Andres Lagar-Cavilla <andres@lagarcavilla.org>
Signed-off-by: Tim Deegan <tim@xen.org>
Committed-by: Tim Deegan <tim@xen.org>
14 years agox86/mm: Consume multiple mem event responses off the ring
Andres Lagar-Cavilla [Tue, 6 Dec 2011 20:10:32 +0000 (20:10 +0000)]
x86/mm: Consume multiple mem event responses off the ring

Signed-off-by: Andres Lagar-Cavilla <andres@lagarcavilla.org>
Signed-off-by: Adin Scannell <adin@scanneel.ca>
Acked-by: Tim Deegan <tim@xen.org>
Committed-by: Tim Deegan <tim@xen.org>
14 years agox86/mm: Allow memevent responses to be signaled via the event channel
Andres Lagar-Cavilla [Tue, 6 Dec 2011 20:10:32 +0000 (20:10 +0000)]
x86/mm: Allow memevent responses to be signaled via the event channel

Don't require a separate domctl to notify the memevent interface that an event
has occured.  This domctl can be taxing, particularly when you are scaling
events and paging to many domains across a single system.  Instead, we use the
existing event channel to signal when we place something in the ring (as per
normal ring operation).

Signed-off-by: Adin Scannell <adin@scannell.ca>
Signed-off-by: Keir Fraser <keir@xen.org>
Signed-off-by: Andres Lagar-Cavilla <andres@lagarcavilla.org>
Acked-by: Tim Deegan <tim@xen.org>
Committed-by: Tim Deegan <tim@xen.org>
14 years agoCreate a generic callback mechanism for Xen-bound event channels
Andres Lagar-Cavilla [Tue, 6 Dec 2011 20:10:32 +0000 (20:10 +0000)]
Create a generic callback mechanism for  Xen-bound event channels

For event channels for which Xen is the consumer, there currently is
a single action. With this patch, we allow event channel creators to
specify a generic callback (or no callback). Because the expectation
is that there will be few callbacks, they are stored in a small table.

Signed-off-by: Adin Scannell <adin@scannell.ca>
Signed-off-by: Keir Fraser <keir@xen.org>
Signed-off-by: Andres Lagar-Cavilla <andres@lagarcavilla.org>
Committed-by: Tim Deegan <tim@xen.org>
14 years agox86/mm: Flag mem_events caused by foreign domains
Andres Lagar-Cavilla [Tue, 6 Dec 2011 20:10:32 +0000 (20:10 +0000)]
x86/mm: Flag mem_events caused by foreign domains

Add a new flag for mem events, as consumers might need to discriminate
foreign domain-caused from guest-caused events. The vcpu field of an
event is bogus from a consumer p.o.v. for foreign domain-caused events.

Also assert that we shouldn't be pausing foreign vcpus.

Signed-off-by: Andres Lagar-Cavilla <andres@lagarcavilla>
Acked-by: Tim Deegan <tim@xen.org>
Committed-by: Tim Deegan <tim@xen.org>
14 years agoX86: Prepare PCID/INVPCID for hvm
Liu, Jinsong [Tue, 6 Dec 2011 11:28:30 +0000 (11:28 +0000)]
X86: Prepare PCID/INVPCID for hvm

This patch is used to prepare exposing PCID/INVPCID features to hvm
guest.
The specific exposure result depend on hvm paging mode (hap/shadow),
which would be handled at next patch.

Signed-off-by: Liu, Jinsong <jinsong.liu@intel.com>
Committed-by: Keir Fraser <keir@xen.org>
14 years agoX86: Disable PCID/INVPCID for pv
Liu, Jinsong [Tue, 6 Dec 2011 11:28:04 +0000 (11:28 +0000)]
X86: Disable PCID/INVPCID for pv

This patch disable PCID/INVPCID for pv.

Signed-off-by: Liu, Jinsong <jinsong.liu@intel.com>
Committed-by: Keir Fraser <keir@xen.org>
14 years agoX86: expose Intel new features to pv/hvm
Liu, Jinsong [Tue, 6 Dec 2011 11:27:18 +0000 (11:27 +0000)]
X86: expose Intel new features to pv/hvm

Intel recently release some new features, including
FMA/AVX2/BMI1/BMI2/LZCNT/MOVBE.
Refer to http://software.intel.com/file/36945
This patch expose these new features to pv and hvm.

Signed-off-by: Liu, Jinsong <jinsong.liu@intel.com>
Committed-by: Keir Fraser <keir@xen.org>
14 years agoKEXEC: fix kexec_get_range_compat to fail vocally.
Andrew Cooper [Mon, 5 Dec 2011 19:42:46 +0000 (19:42 +0000)]
KEXEC: fix kexec_get_range_compat to fail vocally.

Fail with -ERANGE rather than silently truncating 64bit values (a
physical address and size) into 32bit integers for dom0 to consume.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
Simplify the bitwise arithmetic a bit.

Signed-off-by: Keir Fraser <keir@xen.org>
14 years agotools/firmware: remove "_PS0/3" Method
Xudong Hao [Mon, 5 Dec 2011 19:35:06 +0000 (19:35 +0000)]
tools/firmware: remove "_PS0/3" Method

Do not expose the ACPI power management "_PS0/3" Method to guest
firmware.  According to section 3.4 of the APCI specification 4.0, PCI
device control the device power through its own specification but not
through APCI.

Qemu pushes "_PS0/3" to guest will cause a mess between ACPI PM and
PCI PM as a result of incorrect ACPI table shipped with the guest
BIOS, it may cause a failure of PCI device PM state transition(from
PCI_UNKNOWN to PCI_D0).

Signed-off-by: Xudong Hao <xudong.hao@intel.com>
Signed-off-by: Haitao Shan <haitao.shan@intel.com>
Committed-by: Keir Fraser <keir@xen.org>
14 years agoflask: Fix 32-bit compilation of label-pci tool
Daniel De Graaf [Mon, 5 Dec 2011 19:32:05 +0000 (19:32 +0000)]
flask: Fix 32-bit compilation of label-pci tool

The 32-bit tools need to support 64-bit addresses, so use the correct
printf/scanf formats. Also, some systems declare fscanf with attribute
warn_unused_result, so check the result instead of relying on the
value of start being unmodified across a failed call.

Signed-off-by: Daniel De Graaf <dgdegra@tycho.nsa.gov>
Committed-by: Keir Fraser <keir@xen.org>
14 years agoUpdate QEMU_TAG
Ian Jackson [Mon, 5 Dec 2011 13:45:38 +0000 (13:45 +0000)]
Update QEMU_TAG

14 years agohvmloader: Change VM Generation Id Device HID.
Paul Durrant [Fri, 2 Dec 2011 21:51:17 +0000 (13:51 -0800)]
hvmloader: Change VM Generation Id Device HID.

Unfortunately a HID of PNP0A06 will not work for an existing client
driver so this patch aims to choose something that's pretty certain
not to class with anything else.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
Committed-by: Keir Fraser <keir@xen.org>
14 years agoflask: Add flask-label-pci tool
Daniel De Graaf [Fri, 2 Dec 2011 21:49:19 +0000 (13:49 -0800)]
flask: Add flask-label-pci tool

This allows a PCI device and its associated resources to be labeled
without hardcoding addresses (which may change from system to system)
in the security policy.

Signed-off-by: Daniel De Graaf <dgdegra@tycho.nsa.gov>
Committed-by: Keir Fraser <keir@xen.org>
14 years agoxsm: clean up initial SIDs
Daniel De Graaf [Fri, 2 Dec 2011 21:48:31 +0000 (13:48 -0800)]
xsm: clean up initial SIDs

The domU SID is never used before a policy load, and so does not
belong in the initial_sids list.

The PIRQ SID is now incorrectly named; it should simply be called IRQ.

Signed-off-by: Daniel De Graaf <dgdegra@tycho.nsa.gov>
Committed-by: Keir Fraser <keir@xen.org>
14 years agoxsm: rename security_pirq_sid to security_irq_sid
Daniel De Graaf [Fri, 2 Dec 2011 21:47:50 +0000 (13:47 -0800)]
xsm: rename security_pirq_sid to security_irq_sid

Attempting to manage the PIRQ namespace is not useful as guests can
assign any mapping of IRQ to PIRQ (although the identity mapping is
the most common). Change the internal names to reflect this change.

Signed-off-by: Daniel De Graaf <dgdegra@tycho.nsa.gov>
Committed-by: Keir Fraser <keir@xen.org>
14 years agoxsm: Expand I/O resource hooks
Daniel De Graaf [Fri, 2 Dec 2011 21:47:08 +0000 (13:47 -0800)]
xsm: Expand I/O resource hooks

The XSM hooks inside rangeset are not useful in capturing the PIRQ
mappings in HVM domains. They can also be called from softirq context
where current->domain is invalid, causing spurious AVC denials from
unrelated domains on such calls.

Within FLASK code, the rangeset hooks were already divided between
IRQs, I/O memory, and x86 IO ports; propagate this division back
through the XSM hooks and call the XSM functions directly when needed.

This removes XSM checks for the initial rangeset population for dom0
and the removal checks on domain destruction; denying either of these
actions does not make sense.

Signed-off-by: Daniel De Graaf <dgdegra@tycho.nsa.gov>
Committed-by: Keir Fraser <keir@xen.org>
14 years agoxsm: always allow setting non-present PTEs
Daniel De Graaf [Fri, 2 Dec 2011 21:46:24 +0000 (13:46 -0800)]
xsm: always allow setting non-present PTEs

Signed-off-by: Daniel De Graaf <dgdegra@tycho.nsa.gov>
14 years agoxsm: Revert "Fix xsm_mmu_* and xsm_update_va_mapping hooks"
Daniel De Graaf [Fri, 2 Dec 2011 21:45:56 +0000 (13:45 -0800)]
xsm: Revert "Fix xsm_mmu_* and xsm_update_va_mapping hooks"

This reverts 23220:56a3b9c7367f, which removes all validation of the
target pages in the mapping. This crash was solved by properly marking
pages without known SIDs in 22207:20f139010445.

Signed-off-by: Daniel De Graaf <dgdegra@tycho.nsa.gov>
Committed-by: Keir Fraser <keir@xen.org>
14 years agoxsm: remove unused xsm_assign_vector check
Daniel De Graaf [Fri, 2 Dec 2011 21:45:15 +0000 (13:45 -0800)]
xsm: remove unused xsm_assign_vector check

The PHYSDEVOP_alloc_irq_vector hypercall is a noop, so its XSM check
is not useful. Remove it and the "event vector" FLASK permission.

Signed-off-by: Daniel De Graaf <dgdegra@tycho.nsa.gov>
Committed-by: Keir Fraser <keir@xen.org>
14 years agoflask: Fix policy build with new checkpolicy
Daniel De Graaf [Fri, 2 Dec 2011 21:44:26 +0000 (13:44 -0800)]
flask: Fix policy build with new checkpolicy

Version 26 of checkpolicy (shipped with Fedora 16) now requires that
roles be declared prior to setting types for a role. Add a declaration
of the system_r role to fix the build of default XSM/FLASK policy.

Signed-off-by: Daniel De Graaf <dgdegra@tycho.nsa.gov>
Committed-by: Keir Fraser <keir@xen.org>
14 years agotools/libxc: Fix x86_32 build breakage in previous changeset.
Keir Fraser [Fri, 2 Dec 2011 16:40:02 +0000 (08:40 -0800)]
tools/libxc: Fix x86_32 build breakage in previous changeset.

Signed-off-by: Keir Fraser <keir@xen.org>
14 years agotools/x86_64: Fix cpuid() inline asm to not clobber stack's red zone
Keir Fraser [Fri, 2 Dec 2011 14:31:14 +0000 (06:31 -0800)]
tools/x86_64: Fix cpuid() inline asm to not clobber stack's red zone

Pushing stuff onto the stack on x86-64 when we do not specify
-mno-red-zone is unsafe. Since the complicated asm is due to register
pressure on i386, we simply implement an all-new simpler alternative
for x86-64.

Signed-off-by: Keir Fraser <keir@xen.org>
Acked-by: Jan Beulich <jbeulich@novell.com>
14 years agox86/mm: remove 0x55 debug pattern from M2P table
Tim Deegan [Fri, 2 Dec 2011 14:07:52 +0000 (06:07 -0800)]
x86/mm: remove 0x55 debug pattern from M2P table

It's not really any more useful than explicitly setting new M2P
entries to the invalid value.

Signed-off-by: Tim Deegan <tim@xen.org>
Committed-by: Keir Fraser <keir@xen.org>
14 years agoAMD IOMMU v2: minor cleanup
Jan Beulich [Fri, 2 Dec 2011 13:22:47 +0000 (14:22 +0100)]
AMD IOMMU v2: minor cleanup

Despite this array living in an __init function, having such be an
automatic variable is rather inefficient in terms of generated code.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Wei Wang2 <wei.wang2@amd.com>
14 years agox86-64/mmcfg: remove __initdata annotation overlooked in 23749:e8d1c8f074ba
Jan Beulich [Fri, 2 Dec 2011 08:05:26 +0000 (09:05 +0100)]
x86-64/mmcfg: remove __initdata annotation overlooked in 23749:e8d1c8f074ba

Signed-off-by: Jan Beulich <jbeulich@suse.com>
14 years agoSupport of xl sched-sedf
Juergen Gross [Mon, 28 Nov 2011 12:37:17 +0000 (13:37 +0100)]
Support of xl sched-sedf

Supports the xl subcommand sched-sedf.
The man page is only a minimal version (copy from xm man page without
examples). BTW: the xm man page seems not to be in sync with xm sched-sedf -h
regarding the time units. I used milliseconds in the xl implementation.
Only minimal semantical checks of parameters.

Signed-off-by: juergen.gross@ts.fujitsu.com
Acked-by: Ian Jackson <ian.jackson.citrix.com>
Committed-by: Ian Jackson <ian.jackson.citrix.com>
14 years agoCorrect error message in libxl_sched_credit_domain_get()
Juergen Gross [Mon, 28 Nov 2011 12:31:37 +0000 (13:31 +0100)]
Correct error message in libxl_sched_credit_domain_get()

Just a typo...

Signed-off-by: juergen.gross@ts.fujitsu.com
Acked-by: Ian Jackson <ian.jackson.citrix.com>
Committed-by: Ian Jackson <ian.jackson.citrix.com>
14 years agoSupport of xl sched-credit2
Juergen Gross [Mon, 28 Nov 2011 12:31:27 +0000 (13:31 +0100)]
Support of xl sched-credit2

Supports the xl subcommand sched-credit2.

Signed-off-by: juergen.gross@ts.fujitsu.com
Acked-by: Ian Jackson <ian.jackson.citrix.com>
Committed-by: Ian Jackson <ian.jackson.citrix.com>
14 years agoSupport cpupools in xl sched-credit
Juergen Gross [Mon, 28 Nov 2011 12:27:15 +0000 (13:27 +0100)]
Support cpupools in xl sched-credit

Adds cpupool awareness to output of xl sched-credit. Output can now be
restricted to a specific cpupool. The domains are printed for each cpupool
seperately.

The loop over cpupools and domains is seperated from the main command
implementation to be able to support other schedulers as well.

Signed-off-by: juergen.gross@ts.fujitsu.com
Acked-by: Ian Jackson <ian.jackson.citrix.com>
Committed-by: Ian Jackson <ian.jackson.citrix.com>
14 years agoxl sched-credit: support long options
Juergen Gross [Mon, 28 Nov 2011 12:23:31 +0000 (13:23 +0100)]
xl sched-credit: support long options

The help text of xl sched-credit supported long options. Neither the man page
nor the implementation did.

Signed-off-by: juergen.gross@ts.fujitsu.com
Acked-by: Ian Jackson <ian.jackson.citrix.com>
Committed-by: Ian Jackson <ian.jackson.citrix.com>
14 years agoxend: insufficient quoting in tapdisk
Philipp Hahn [Thu, 1 Dec 2011 18:30:29 +0000 (18:30 +0000)]
xend: insufficient quoting in tapdisk

insufficient quoting between "tap-ctl list" and xend/server/BlktapController.py

BlktapController splits the output into lines using \n, then each line
at each space, and finally each of these 'words' at the '=', which
fails if the filename contains spaces.

As a quick work-around, the attached patch fixes the problem for me. That is,
until tap-ctl changes it's output format.

A more permanent solution would be to add proper quoting / escaping to tap-ctl
and un-quoting / de-escaping  to BlktapController.py

Signed-off-by: Philipp Hahn <hahn@univention.de>
Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>
14 years agotools: init.d/Linux/xencommons: load evtchn and gntdev modules
Olaf Hering [Thu, 1 Dec 2011 18:28:18 +0000 (18:28 +0000)]
tools: init.d/Linux/xencommons: load evtchn and gntdev modules

There is currently no code in the kernel to trigger autoload of the
evtchn or gntdev drivers. Load them manually during xencommons start.
Handle both pvops and xenlinux module names.

Signed-off-by: Olaf Hering <olaf@aepfle.de>
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>
14 years agotools: init.d/Linux/xencommons: run script only when needed
Olaf Hering [Thu, 1 Dec 2011 18:27:42 +0000 (18:27 +0000)]
tools: init.d/Linux/xencommons: run script only when needed

Currently xencommons prints an error that /proc/xen/capabilities does
not exist when started on a non-xen kernel.

Update the xencommons script to run only when needed:
- do not run if /proc/xen does not exist
- check if /proc/xen/capabilities exists before doing the grep for dom0

Signed-off-by: Olaf Hering <olaf@aepfle.de>
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>
14 years agoUpdate QEMU_TAG
Ian Jackson [Thu, 1 Dec 2011 18:26:45 +0000 (18:26 +0000)]
Update QEMU_TAG

14 years agolibxc: Fix checks on grant notify arguments
Daniel De Graaf [Thu, 1 Dec 2011 18:20:12 +0000 (18:20 +0000)]
libxc: Fix checks on grant notify arguments

The notify offset and event channels are both unsigned variables, so
testing for >= 0 will not correctly detect the use of -1 to indicate
the field is unused. Remove the useless comparison and replace with
correct range checks or comparisons to -1.

Reported-by: Anil Madhavapeddy <anil@recoil.org>
Signed-off-by: Daniel De Graaf <dgdegra@tycho.nsa.gov>
Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>
14 years agomerge
Tim Deegan [Thu, 1 Dec 2011 18:15:51 +0000 (18:15 +0000)]
merge

14 years agoTeach xenpaging to use the new and non-racy xc_mem_paging_load interface
Andres Lagar-Cavilla [Thu, 1 Dec 2011 18:14:24 +0000 (18:14 +0000)]
Teach xenpaging to use the new and non-racy xc_mem_paging_load interface

Signed-off-by: Andres Lagar-Cavilla <andres@lagarcavilla.org>
Acked-by: Olaf Hering <olaf@aepfle.de>
Committed-by: Tim Deegan <tim@xen.org>
14 years agoTools: Libxc wrappers to automatically fill in page oud page contents on prepare
Andres Lagar-Cavilla [Thu, 1 Dec 2011 18:14:24 +0000 (18:14 +0000)]
Tools: Libxc wrappers to automatically fill in page oud page contents on prepare
Signed-off-by: Andres Lagar-Cavilla <andres@lagarcavilla.org>
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
Committed-by: Tim Deegan <tim@xen.org>
14 years agoAfter preparing a page for page-in, allow immediate fill-in of the page contents
Andres Lagar-Cavilla [Thu, 1 Dec 2011 18:14:24 +0000 (18:14 +0000)]
After preparing a page for page-in, allow immediate fill-in of the page contents

p2m_mem_paging_prep ensures that an mfn is backing the paged-out gfn, and
transitions to the next state in the paging state machine for that page.
Foreign mappings of the gfn will now succeed. This is the key idea, as
it allows the pager to now map the gfn and fill in its contents.

Unfortunately, it also allows any other foreign mapper to map the gfn and read
its contents. This is particularly dangerous when the populate is launched
by a foreign mapper in the first place, which will be actively retrying the
map operation and might race with the pager. Qemu-dm being a prime example.

Fix the race by allowing a buffer to be optionally passed in the prep
operation, and having the hypervisor memcpy from that buffer into the newly
prepped page before promoting the gfn type.

Signed-off-by: Andres Lagar-Cavilla <andres@lagarcavilla.org>
Acked-by: Tim Deegan <tim@xen.org>
Committed-by: Tim Deegan <tim@xen.org>
14 years agolibxl: Introduce migrate with the new QEMU.
Anthony PERARD [Thu, 1 Dec 2011 18:09:43 +0000 (18:09 +0000)]
libxl: Introduce migrate with the new QEMU.

Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
Acked-by: Ian Jackson <ian.jackson.citrix.com>
Committed-by: Ian Jackson <ian.jackson.citrix.com>
14 years agolibxl: libxl__qmp_migrate
Anthony PERARD [Thu, 1 Dec 2011 18:09:42 +0000 (18:09 +0000)]
libxl: libxl__qmp_migrate

This command works in two steps. First, a fd is sent to QEMU through the QMP
socket. And then, the second command "migrate" use the fd previously sent to
ask QEMU to save its states.

This comes with an alternative qmp_send function that can send a fd.

Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
Acked-by: Ian Jackson <ian.jackson.citrix.com>
Committed-by: Ian Jackson <ian.jackson.citrix.com>
14 years agolibxl: split libxl__qmp_send
Anthony PERARD [Thu, 1 Dec 2011 18:09:42 +0000 (18:09 +0000)]
libxl: split libxl__qmp_send

This patch prepares for the next patch, that will introduce an
alternative send function.

Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
Acked-by: Ian Jackson <ian.jackson.citrix.com>
Committed-by: Ian Jackson <ian.jackson.citrix.com>
14 years agoUpdate QEMU_TAG
Ian Jackson [Thu, 1 Dec 2011 18:04:13 +0000 (18:04 +0000)]
Update QEMU_TAG

14 years agoMake the prototype of p2m_mem_access_resume consistent
Andres Lagar-Cavilla [Thu, 1 Dec 2011 17:58:17 +0000 (17:58 +0000)]
Make the prototype of p2m_mem_access_resume consistent

Signed-off-by: Adin Scannell <adin@scannell.ca>
Signed-off-by: Keir Fraser <keir@xen.org>
Signed-off-by: Andres Lagar-Cavilla <andres@lagarcavilla.org>
Acked-by: Tim Deegan <tim@xen.org>
Committed-by: Tim Deegan <tim@xen.org>
14 years agoMerge
Ian Jackson [Thu, 1 Dec 2011 17:26:48 +0000 (17:26 +0000)]
Merge

14 years agotools/ocaml: Release the global lock during some hypercalls
Jonathan Davies [Thu, 1 Dec 2011 17:25:39 +0000 (17:25 +0000)]
tools/ocaml: Release the global lock during some hypercalls

Since libxc is re-entrant, there is no need for the OCaml bindings to
prevent more than one thread from entering libxc concurrently.

Previously, the OCaml bindings had prevented re-entrancy by not using
caml_{enter,leave}_blocking_section in the C stubs. The absence of
these calls meant that the global lock remained held during
hypercalls. This caused multi-threaded applications to completely lock
up during long-running hypercalls.

Calls to these functions were present but commented out in the OCaml
bindings some years ago when libxc was not fully re-entrant.

Instead, we now do call caml_{enter,leave}_blocking_section in all the
places it used to be commented out, meaning that the global lock is
released during those hypercalls. We also no longer assert the
XC_OPENFLAG_NON_REENTRANT flag when calling xc_interface_open because
the caller no longer does re-entrancy prevention at those places.

This patch has now gone through a XenRT nightly test; no problems were
observed.

Signed-off-by: Jonathan Davies <jonathan.davies@citrix.com>
Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>
14 years agomerge
Tim Deegan [Thu, 1 Dec 2011 17:24:12 +0000 (17:24 +0000)]
merge

14 years agox86/mm: Fix checks during foreign mapping of paged pages
Andres Lagar-Cavilla [Thu, 1 Dec 2011 17:21:24 +0000 (17:21 +0000)]
x86/mm: Fix checks during foreign mapping of paged pages

Check that the valid mfn is the one we are mapping, not the
mfn of the page table of the foreign domain.

Signed-off-by: Andres Lagar-Cavilla <andres@lagarcavilla.org>
Acked-by: Tim Deegan <tim@xen.org>
Committed-by: Tim Deegan <tim@xen.org>
14 years agox86/mm: Ensure maps used by nested hvm code cannot be paged out
Andres Lagar-Cavilla [Thu, 1 Dec 2011 17:21:24 +0000 (17:21 +0000)]
x86/mm: Ensure maps used by nested hvm code cannot be paged out

The nested hvm code maps pages of the guest hvm. These maps live beyond
a hypervisor entry/exit pair, and thus their liveness cannot be ensured
with get_gfn/put_gfn critical sections. Ensure their liveness by
increasing the page ref count, instead.

Signed-off-by: Andres Lagar-Cavilla <andres@lagarcavilla.org>
Acked-by: Tim Deegan <tim@xen.org>
Committed-by: Tim Deegan <tim@xen.org>
14 years agox86: Add conversion from a xen map to an mfn
Andres Lagar-Cavilla [Thu, 1 Dec 2011 17:21:24 +0000 (17:21 +0000)]
x86: Add conversion from a xen map to an mfn

This conversion is a trivial invocation of virt_to_mfn in 64 bits.
In 32 bits it uses the linear_map.

Signed-off-by: Andres Lagar-Cavilla <andres@lagarcavilla.org>
Signed-off-by: Tim Deegan <tim@xen.org>
Committed-by: Tim Deegan <tim@xen.org>
14 years agox86/microcode: enable boot time (pre-Dom0) loading
Jan Beulich [Thu, 1 Dec 2011 16:57:54 +0000 (17:57 +0100)]
x86/microcode: enable boot time (pre-Dom0) loading

Largely as a result of the continuing resistance of Linux maintainers
to accept a microcode loading patch for pv-ops Xen kernels, this
follows the suggested route and provides a means to load microcode
updates without the assistance of Dom0, thus also addressing eventual
problems in the hardware much earlier.

This leverages the fact that via the multiboot protocol another blob
of data can be easily added in the form of just an extra module. Since
microcode data cannot reliably be recognized by looking at the
provided data, this requires (in the non-EFI case) the use of a
command line parameter ("ucode=<number>") to identify which of the
modules is to be parsed for an eventual microcode update (in the EFI
case the module is being identified in the config file, and hence the
command line argument, if given, will be ignored).

This required to adjust the XSM module determination logic accordingly.

The format of the data to be provided is the raw binary blob already
used for AMD CPUs, and the output of the intel-microcode2ucode utility
for the Intel case (either the per-(family,model,stepping) file or -
to make things easier for distro-s integration-wise - simply the
concatenation of all of them).

In order to not convert the spin_lock() in microcode_update_cpu() (and
then obviously also all other uses on microcode_mutex) to
spin_lock_irqsave() (which would be undesirable for the hypercall
context in which the function also runs), the boot time handling gets
done using a tasklet (instead of using on_selected_cpus()).

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Keir Fraser <keir@xen.org>
14 years agox86: consolidate microcode loading code
Jan Beulich [Thu, 1 Dec 2011 16:55:26 +0000 (17:55 +0100)]
x86: consolidate microcode loading code

- memory was leaked on a CPU offline/online cycle (including S3)
- memory was leaked on AMD systems when microcode_update() ran a 2nd
  time with the same data that was used on the first run
- microcode never got restored on APs during S3 resume (or post-boot
  onlining of a CPU that was also online when microcode_update() first
  ran [in the event the prior microcode update got lost intermediately,
  which supposedly shouldn't happen]); this will still be the case when
  no other online CPU has an identical signature (which however is now
  consistent with bringing up such a CPU the very first time)
- resume was unimplemented in the AMD case
- there was a race between microcode_update_cpu() and
  microcode_resume_cpu()

This also moves vendor specific type declarations to the vendor source
file and sets the stage for boot time microcode loading (i.e. without
Dom0 involvement).

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Keir Fraser <keir@xen.org>
14 years agoxl: Apply CLOEXEC to the restore_fd.
Anthony Perard [Thu, 1 Dec 2011 16:28:51 +0000 (16:28 +0000)]
xl: Apply CLOEXEC to the restore_fd.

At restore time, the file descriptor opened on the migration state file is
still open in the device model. Let's apply FD_CLOEXEC to it.

This patch provides libxl_fd_set_cloexec to users of libxl, instead of keeping
this function internal.

Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>
14 years agoxl.pod.1: add a note about autoballoon and dom0_mem
Stefano Stabellini [Thu, 1 Dec 2011 16:26:36 +0000 (16:26 +0000)]
xl.pod.1: add a note about autoballoon and dom0_mem

Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Committed-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
14 years agoxl.pod.1: add a refence to http://wiki.xen.org/xenwiki/ReportingBugs
Stefano Stabellini [Thu, 1 Dec 2011 16:26:36 +0000 (16:26 +0000)]
xl.pod.1: add a refence to wiki.xen.org/xenwiki/ReportingBugs

Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Committed-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
14 years agoxl.pod.1: remove AUTHORS section
Stefano Stabellini [Thu, 1 Dec 2011 16:26:35 +0000 (16:26 +0000)]
xl.pod.1: remove AUTHORS section

Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Committed-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
14 years agoxl.pod.1: improve description of virtual device subcommands
Stefano Stabellini [Thu, 1 Dec 2011 16:26:35 +0000 (16:26 +0000)]
xl.pod.1: improve description of virtual device subcommands

Add a reference to xl-disk-configuration and xl-network-configuration.

Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Committed-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
14 years agoxl.pod.1: remove dry-run option from create and cpupool-create
Stefano Stabellini [Thu, 1 Dec 2011 16:26:35 +0000 (16:26 +0000)]
xl.pod.1: remove dry-run option from create and cpupool-create

there is already a global dry-run option, there is no point in adding
another one for each subcommand

Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Committed-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
14 years agoxl.pod.1: improve the description of pci-list-assignable-devices
Stefano Stabellini [Thu, 1 Dec 2011 16:26:34 +0000 (16:26 +0000)]
xl.pod.1: improve the description of pci-list-assignable-devices

Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Committed-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
14 years agoxl.pod.1: improve the description of the info subcommand
Stefano Stabellini [Thu, 1 Dec 2011 16:26:34 +0000 (16:26 +0000)]
xl.pod.1: improve the description of the info subcommand

also update the example

Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Committed-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
14 years agoxl.pod.1: improve the debug-keys subcommand description
Stefano Stabellini [Thu, 1 Dec 2011 16:26:34 +0000 (16:26 +0000)]
xl.pod.1: improve the debug-keys subcommand description

Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Committed-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
14 years agoxl.pod.1: introduce a TO BE DOCUMENTED section
Stefano Stabellini [Thu, 1 Dec 2011 16:26:33 +0000 (16:26 +0000)]
xl.pod.1: introduce a TO BE DOCUMENTED section

Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Committed-by: Ian Jackson <Ian.Jackson@eu.citrix.com>